#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2019/4/29 17:02
# @Author  : 何胜金-heshengjin
# @Site    : 
# @File    : type_test.py
# @Software: PyCharm
"""
类比java assist

type()使用

type() 函数是一个元类

可以看到，在 Python 中，类也是对象，你可以动态的创建类。
    其实这也就是当你使用关键字 class 时 Python 在幕后做的事情，而这就是通过元类来实现的。

type和isinstance
type不会认为子类是父类的类型，不会考虑继承关系。isinstance会任务子类是父类的类型，考虑继承关系。

Type和Object
type为对象的顶点，所有对象都创建自type。

object为类继承的顶点，所有类都继承自object。

python中万物皆对象，一个python对象可能拥有两个属性，__class__ 和 __base__，
__class__ 表示这个对象是谁创建的，__base__ 表示一个类的父类是谁。
"""

def printHello(self,name='Py'):
    print("printHello {}".format(name))

# 创建一个Hello类
Hello = type('aHello',(object,),dict(printHello=printHello))

h = Hello()

h.printHello(name="测试type定义的类的方法")

print(type(Hello))

print(type(h.__class__))

print(Hello.__name__)

print(h.__class__)


print("/////////////////////////////////")
print(object.__class__)
print(object.__base__)